#include <stdio.h>
#include <stdlib.h>
#define COLS 2
void conver(int *p, int *q);

int main() {
    int n,//n 表示报名参加笔试的选手总数
    m,//m 表示计划录取的志愿者人数
    k,//选手的报名号
    s;//选手的笔试成绩

    //定一个数组指针
    int (*a)[COLS];
    scanf("%d %d", &n, &m);
    //这个必须是COLS与n的相乘才能开辟出二维数组的相应的空间
    a = (int (*)[COLS]) malloc(sizeof(int) * COLS * n);
    int i, j, z, x;
    //分别把k和s存到a中
    for (i = 0; i < n; ++i) {
        scanf("%d %d", &k, &s);
        *(*(a + i) + 0) = k;
        *(*(a + i) + 1) = s;
    }
    //把成绩从高到低排序
    for (i = 0; i < n; ++i) {
        for (j = i + 1; j < n; ++j) {
            if (a[i][1] < a[j][1]) {
                for (z = 0; z < COLS; ++z) {
                    conver(*(a + i) + z, *(a + j) + z);
                }
            }
        }
        for (x = i + 1; x < n; ++x) {
            //当成绩相等时进行学号排序
            if (*(*(a + i) + 1) == *(*(a + x) + 1)) {
                if (a[i][0] > a[x][0]) {
                    for (z = 0; z < COLS; ++z) {
                        conver(*(a + i) + z, *(a + x) + z);
                    }
                }
            }
        }
    }
    int y = 0;
    //输入数据保证m*150%向下取整后小于等于n
    m *= 1.5;
    m > n ? m = n : m;
    //z是m当前行的成绩
    z = *(*(a + m) + 1);
    //筛选
    for (i = 0; i < n; ++i) {
        //是有分数大于等于z时 y++
        if (*(*(a + i) + 1) >= z) {
            y++;
        }
    }
    printf("%d %d\n", z, y);

    for (i = 0; i < y; ++i) {
        for (j = 0; j < COLS; ++j) {
            printf("%d ", *(*(a + i) + j));
        }
        printf("\n");
    }
    return 0;
}

/*
 * 交换位置
 */
void conver(int *p, int *q) {
    int temp;
    temp = *p;
    *p = *q;
    *q = temp;
}
